home *** CD-ROM | disk | FTP | other *** search
- #
- # Some rules for automagically making the demos work
- #
- # The demos should only define any source files they need
- # (CFILES, FFILES, ASFILES, HFILES, etc), the flags they
- # need to link with (LCINCS, LCDEFS, LLDLIBS, etc), and
- # a rule for building the TARGET (if any); for example
- #
- # ${TARGETS}: ${OBJECTS}
- # ${CCF} -o $@ ${OBJECTS} ${LDFLAGS}
- #
- # The demodefs file is assumed to be already included;
- # this file installs everything properly.
- #
- # Source code will be installed in /usr/demos/src when a 'make sales'
- # is done UNLESS the variable NOSOURCE is set to some string. Demos
- # must properly define HFILES for this to work, and must also define
- # OTHERSOURCE if there are extraneous files to be installed (README's,
- # for example)
- #
-
- ${COMMONPREF}default: ${TARGETS}
-
- include ${COMMONRULES}
-
- #
- # Descend into subdirectories doing makes.
- # Depends on TARGET being set to the target to make in each
- # subdirectory, and SUBDIRS to be set to the list of directories.
- # The DESCEND macro defined in demodefs will define TARGET and
- # call this for you.
- #
- descend:
- @for D in ${SUBDIRS}; do \
- if [ -d $$D ]; then \
- echo "====\tcd $$D; ${MAKE} ${TARGET}"; \
- ( cd $$D ; ${MAKE} ${TARGET}); \
- fi \
- done
- #
- # We need to install the following stuff:
- # -- binary(s)
- # -- buttonfly file(s)
- # -- info slide(s)
- # -- data file(s) (if any)
- #
- ${COMMONPREF}install: ${COMMONPREF}default
- @if test "${TARGETS}" != ""; then \
- DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE} targinst; \
- fi
- @if test "${AREAS}" != ""; then \
- DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE}\
- bflyinst infoinst; \
- fi; \
- if test "${DATAFILES}" != ""; then \
- DIDB='${IDBTAG}' ${MAKE} -f ${MAKEFILE} datainst; \
- fi
-
- #
- # Sales installs everything the same as install, except with different
- # IDB tags. SALESIDB must always be set in the demo's Makefile, and
- # DATAIDB must be set if there is any data associated.
- #
- ${COMMONPREF}sales: ${COMMONPREF}default
- @if test "${TARGETS}" != ""; then \
- DIDB='${SALESIDB}' ${MAKE} -f ${MAKEFILE} targinst; \
- fi
- @if test "${AREAS}" != ""; then \
- DIDB='${SALESIDB}' ${MAKE} -f ${MAKEFILE}\
- bflyinst infoinst; \
- fi; \
- if test "${DATAFILES}" != ""; then \
- DIDB='${DATAIDB}' ${MAKE} -f ${MAKEFILE} datainst; \
- fi; \
- if test "${MOREDATAFILES}" != ""; then \
- DIDB='${MOREDATAIDB}' ${MAKE} -f ${MAKEFILE} moredatainst; \
- fi; \
- if test "${NOSOURCE}" = ""; then \
- ${MAKE} -f ${MAKEFILE} ${COMMONPREF}source; \
- fi; \
- if test "${THELINKDIR}" != ""; then \
- ${MAKE} -f ${MAKEFILE} thelinkdirinst ; \
- fi; \
- if test "${LINKDIRS}" != ""; then \
- ${MAKE} -f ${MAKEFILE} linkdirinst ; \
- fi; \
- if test "${LINKFILES}" != ""; then \
- ${MAKE} -f ${MAKEFILE} linkfileinst ; \
- fi
-
- #
- # targinst is responsible for installing the TARGET (there is only
- # one, even though the variable is ${TARGETS} into /usr/demos/bin
- #
- targinst:
- ${INSTALL} -F /usr/demos/bin -u demos -g demos -m 755 ${DIDB} ${TARGETS}
-
- #
- # bflyinst installs the buttonfly files. A demo can have separate
- # buttonfly files for each area it gets installed into. For example,
- # suppose a demo named 'bleuch' belonged to areas 'product/ick',
- # 'market/ack', and 'market/foo'. Then if a file named 'm_bleuch_ick'
- # exists in the source tree, it will be installed as the buttonfly
- # file for bleuch in the prod/ick area. Otherwise, the generic
- # m_bluech file gets installed there. The same rules apply for the
- # other areas bleuch relates to.
- #
- bflyinst:
- @for i in ${AREAS}; do\
- for j in ${TARGETS}; do\
- BFLYFILE=m_"$$j"_`basename $$i`; \
- if test -f $$BFLYFILE; then \
- echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 644 ${DIDB} -src $$BFLYFILE .m_$$j; \
- ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 644 ${DIDB} -src $$BFLYFILE .m_$$j; \
- elif test -f m_$$j; then \
- echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 644 ${DIDB} -src m_$$j .m_$$j; \
- ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 644 ${DIDB} -src m_$$j .m_$$j; \
- fi; \
- done; \
- done
-
- #
- # Info slides work a lot like the buttonfly files. See the discussion
- # above.
- #
- infoinst:
- @for i in ${AREAS}; do\
- for j in ${TARGETS}; do\
- INFOFILE=$$j.`basename $$i`.info; \
- if test -f $$INFOFILE; then \
- echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 755 ${DIDB} -src $$INFOFILE $$j.info; \
- ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 755 ${DIDB} -src $$INFOFILE $$j.info; \
- elif test -f $$j.info; then \
- echo ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 755 ${DIDB} $$j.info; \
- ${INSTALL} -F /usr/demos/$$i -u demos -g demos \
- -m 755 ${DIDB} $$j.info; \
- fi; \
- done; \
- done
-
- #
- # Data files work like ${TARGETS}, only there can be more than one of
- # them. Also, their mode isn't changed (it is assumed to be correct
- # in the source tree)
- #
- datainst: ${DATAFILES}
- ${INSTALL} -u demos -g demos -m 755\
- ${DIDB} -dir /usr/demos/data/${DATADIR}
- @for j in ${DATAFILES}; do\
- name=`basename $$j`; \
- echo ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
- ${DIDB} -src $$j $$name; \
- ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
- ${DIDB} -src $$j $$name; \
- done
-
- moredatainst: ${MOREDATAFILES}
- @for j in ${MOREDATAFILES}; do\
- name=`basename $$j`; \
- echo ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
- ${DIDB} -src $$j $$name; \
- ${INSTALL} -F /usr/demos/data/${DATADIR} -u demos -g demos \
- ${DIDB} -src $$j $$name; \
- done
-
- #
- # Install all the various source files; this includes:
- # SOURCE: defined from CFILES/HFILES/C++FILES, etc
- # OTHERSOURCE: defined by the demo's Makefile if it has other
- # things to be installed (like README files)
- # MAKEFILE: this Makefile
- # m_*: any buttonfly files
- # *.info: any information slides
- #
- ${COMMONPREF}source: ${SOURCES} ${OTHERSOURCE}
- @directory=`pwd | sed 's_.*usr/src/cmd/demo/*__'`; \
- echo ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SOURCEIDB} /usr/demos/src/$$directory; \
- ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SOURCEIDB} /usr/demos/src/$$directory; \
- echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} ${MAKEFILE}; \
- ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} ${MAKEFILE}; \
- set -- ${SOURCES} ${OTHERSOURCE} ;\
- if test $$# != 0 ; then \
- echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} $$*; \
- ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} $$*; \
- fi; \
- if ( `ls m_* >/dev/null 2>&1` ) ; then \
- echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} m_*; \
- ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} m_*; \
- fi; \
- if ( `ls *.info >/dev/null 2>&1` ) ; then \
- echo ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} *.info; \
- ${INSTALL} -F /usr/demos/src/$$directory -u demos -g demos \
- -m 644 ${SOURCEIDB} *.info; \
- fi
-
- #
- thelinkdirinst: ${THELINKDIR}
- ${INSTALL} -dir -m 755 -u demos -g demos ${SALESIDB} \
- /usr/demos/data/${LINKTARGETDIR}/${TARGETS}
- @FILES=`cd ${THELINKDIR}; /bin/ls` ; \
- for j in $$FILES ; do \
- echo ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/${TARGETS} \
- -u demos -g demos ${SALESIDB} -src ${THELINKDIR}/$$j $$j ; \
- ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/${TARGETS} \
- -u demos -g demos ${SALESIDB} -src ${THELINKDIR}/$$j $$j ; \
- done
-
- linkdirinst: ${LINKDIRS}
- @if [ ${LINKTARGETDIR}X != X ]; then \
- echo ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SALESIDB} /usr/demos/data/${LINKTARGETDIR} ; \
- ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SALESIDB} /usr/demos/data/${LINKTARGETDIR} ; \
- fi
- @for i in ${LINKDIRS}; do \
- echo ++++ Link directory $$i ; \
- echo ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SALESIDB} /usr/demos/data/${LINKTARGETDIR}/$$i ; \
- ${INSTALL} -dir -m 755 -u demos -g demos \
- ${SALESIDB} /usr/demos/data/${LINKTARGETDIR}/$$i ; \
- FILES=`cd $$i; /bin/ls` ; \
- for j in $$FILES ; do \
- echo ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/$$i \
- -u demos -g demos ${SALESIDB} -src $$i/$$j $$j ; \
- ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR}/$$i \
- -u demos -g demos ${SALESIDB} -src $$i/$$j $$j ; \
- done ; \
- done
-
- linkfileinst: ${LINKFILES}
- ${INSTALL} -F /usr/demos/data/${LINKTARGETDIR} \
- -u demos -g demos ${SALESIDB} ${LINKFILES}
-
-